package com.swanclouds.model.systems.builder.Oem.BMC;

import com.swanclouds.common.Buildable;
import com.swanclouds.model.systems.VolumeCreate;
import com.swanclouds.redfish.systems.domain.Oem.BMC.BMCCreateVolumeConcrete;

import java.util.List;

/**
 * OEM.BMC 创建逻辑卷
 *
 * @author 张立强
 */
public interface BMCCreateVolume extends VolumeCreate, Buildable<BMCCreateVolumeBuilder> {

    /**
     * 逻辑盘的名称 最大长度为15个字节的字符串
     * @return VolumeName
     */
    String getVolumeName();

    /**
     * 物理成员盘列表
     * @return Drives
     */
    List<String> getDrives();

    /**
     * 逻辑盘的RAID级别 [RAID0,RAID1,RAID5,RAID6,RAID10,RAID020...]
     * @return VolumeRaidLevel
     */
    String getVolumeRaidLevel();

    /**
     * 逻辑盘子组个数 [创建RAID0/RAID1/RAID5/RAID6时，此参数为1,创建RAID10/RAID50/RAID60时，此参数可设置为2~8]
     *
     * @return SpanNumber
     */
    Integer getSpanNumber();

    /**
     * 逻辑盘默认读策略 [No Read Ahead, Read Ahead]
     * @return DefaultReadPolicy
     */
    String getDefaultReadPolicy();

    /**
     * 逻辑盘默认写策略 [Write Through, Write Back, Write Back Always]
     * @return DefaultWritePolicy
     */
    String getDefaultWritePolicy();

    /**
     * 逻辑盘默认的Cache策略 [Direct IO, Cache IO]
     * @return DefaultCachePolicy
     */
    String getDefaultCachePolicy();

    /**
     * 逻辑盘的访问策略 [Read/Write, Read Only, Blocked]
     * @return AccessPolicy
     */
    String getAccessPolicy();

    /**
     * 物理成员盘的缓存策略 [Unchanged, Enabled, Disabled]
     * @see BMCCreateVolumeConcrete.DriveCachePolicy
     * @return DriveCachePolicy
     */
    String getDriveCachePolicy();

    /**
     * 逻辑盘初始化模式 [No Initialization, Quick Initialization, Full Initialization]
     * @see BMCCreateVolumeConcrete.InitializationMode
     * @return InitializationMode
     */
    String getInitializationMode();


}
